package net.jumpengine.bean;

import net.jumpengine.M;
import net.jumpengine.Manager;
import net.jumpengine.inter.ITimeHandle;
import net.jumpengine.inter.IUpdate;

/**
 * 一个定时执行类,默认自动添加
 * <br /><br />
 * <b>作者:&nbsp;</b>张天文 <br />
 * <b>日期:&nbsp;</b>2020年12月23日 下午6:07:38<br />
 * @date
 */
public class TimeUpdate implements IUpdate {
	protected long interval;
	protected long time=0;
	protected boolean able=true;
	private Base base;
	private ITimeHandle handle;
	
	/**
	 * @param interval 定时间隔,单位为毫秒,1000毫秒=1秒
	 * @param base 触发后需要操作的Base
	 * @param handle 事件触发处理
	 */
	public TimeUpdate(long interval,Base base,ITimeHandle handle) {
		this.interval=interval;
		this.base=base;
		this.handle=handle;
		if(Manager.getAutoAdd())M.b().addUpdate(this);
	}
	
	@Override
	public void update(long now) {
		if(!able)return;
		if(time==0) {
			time=now;
			return;
		}
		if(now-time<interval)return;
		time=now;
		invoke();
	}

	protected void invoke() {
		handle.timeHandle(this, base);
	}

	@Override
	public boolean isAble() {
		return able;
	}

	public void setAble(boolean able) {
		this.able = able;
		time=0;
	}
}
